home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / GL / ideas / draw_logo_shadow.c < prev    next >
C/C++ Source or Header  |  1994-08-01  |  11KB  |  469 lines

  1. /*
  2.  * Copyright 1992, 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #include <gl.h>
  18.  
  19. #include "objects.h"
  20.  
  21. static float scp[18][3] = {
  22.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 5.000000},
  23.     {0.707107, 0.707107, 0.000000},    {0.707107, 0.707107, 5.000000},
  24.     {0.000000, 1.000000, 0.000000},    {0.000000, 1.000000, 5.000000},
  25.     {-0.707107, 0.707107, 0.000000},    {-0.707107, 0.707107, 5.000000},
  26.     {-1.000000, 0.000000, 0.000000},    {-1.000000, 0.000000, 5.000000},
  27.     {-0.707107, -0.707107, 0.000000},    {-0.707107, -0.707107, 5.000000},
  28.     {0.000000, -1.000000, 0.000000},    {0.000000, -1.000000, 5.000000},
  29.     {0.707107, -0.707107, 0.000000},    {0.707107, -0.707107, 5.000000},
  30.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 5.000000},
  31. };
  32.  
  33. static float dcp[18][3] = {
  34.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 7.000000},
  35.     {0.707107, 0.707107, 0.000000},    {0.707107, 0.707107, 7.000000},
  36.     {0.000000, 1.000000, 0.000000},    {0.000000, 1.000000, 7.000000},
  37.     {-0.707107, 0.707107, 0.000000},    {-0.707107, 0.707107, 7.000000},
  38.     {-1.000000, 0.000000, 0.000000},    {-1.000000, 0.000000, 7.000000},
  39.     {-0.707107, -0.707107, 0.000000},    {-0.707107, -0.707107, 7.000000},
  40.     {0.000000, -1.000000, 0.000000},    {0.000000, -1.000000, 7.000000},
  41.     {0.707107, -0.707107, 0.000000},    {0.707107, -0.707107, 7.000000},
  42.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 7.000000},
  43. };
  44.  
  45. static float ep[9][9][3] = {
  46.     {
  47.     {1.000000, 0.000000, 0.000000},
  48.     {0.707107, 0.707107, 0.000000},
  49.     {0.000000, 1.000000, 0.000000},
  50.     {-0.707107, 0.707107, 0.000000},
  51.     {-1.000000, 0.000000, 0.000000},
  52.     {-0.707107, -0.707107, 0.000000},
  53.     {0.000000, -1.000000, 0.000000},
  54.     {0.707107, -0.707107, 0.000000},
  55.     {1.000000, 0.000000, 0.000000},
  56.     },
  57.  
  58.     {
  59.     {1.000000, 0.019215, 0.195090},
  60.     {0.707107, 0.712735, 0.057141},
  61.     {0.000000, 1.000000, 0.000000},
  62.     {-0.707107, 0.712735, 0.057141},
  63.     {-1.000000, 0.019215, 0.195090},
  64.     {-0.707107, -0.674305, 0.333040},
  65.     {0.000000, -0.961571, 0.390181},
  66.     {0.707107, -0.674305, 0.333040},
  67.     {1.000000, 0.019215, 0.195090},
  68.     },
  69.  
  70.     {
  71.     {1.000000, 0.076120, 0.382683},
  72.     {0.707107, 0.729402, 0.112085},
  73.     {0.000000, 1.000000, 0.000000},
  74.     {-0.707107, 0.729402, 0.112085},
  75.     {-1.000000, 0.076120, 0.382683},
  76.     {-0.707107, -0.577161, 0.653282},
  77.     {0.000000, -0.847759, 0.765367},
  78.     {0.707107, -0.577161, 0.653282},
  79.     {1.000000, 0.076120, 0.382683},
  80.     },
  81.  
  82.     {
  83.     {1.000000, 0.168530, 0.555570},
  84.     {0.707107, 0.756468, 0.162723},
  85.     {0.000000, 1.000000, 0.000000},
  86.     {-0.707107, 0.756468, 0.162723},
  87.     {-1.000000, 0.168530, 0.555570},
  88.     {-0.707107, -0.419407, 0.948418},
  89.     {0.000000, -0.662939, 1.111140},
  90.     {0.707107, -0.419407, 0.948418},
  91.     {1.000000, 0.168530, 0.555570},
  92.     },
  93.  
  94.     {
  95.     {1.000000, 0.292893, 0.707107},
  96.     {0.707107, 0.792893, 0.207107},
  97.     {0.000000, 1.000000, 0.000000},
  98.     {-0.707107, 0.792893, 0.207107},
  99.     {-1.000000, 0.292893, 0.707107},
  100.     {-0.707107, -0.207107, 1.207107},
  101.     {0.000000, -0.414214, 1.414214},
  102.     {0.707107, -0.207107, 1.207107},
  103.     {1.000000, 0.292893, 0.707107},
  104.     },
  105.  
  106.     {
  107.     {1.000000, 0.444430, 0.831470},
  108.     {0.707107, 0.837277, 0.243532},
  109.     {0.000000, 1.000000, 0.000000},
  110.     {-0.707107, 0.837277, 0.243532},
  111.     {-1.000000, 0.444430, 0.831470},
  112.     {-0.707107, 0.051582, 1.419407},
  113.     {0.000000, -0.111140, 1.662939},
  114.     {0.707107, 0.051582, 1.419407},
  115.     {1.000000, 0.444430, 0.831470},
  116.     },
  117.  
  118.     {
  119.     {1.000000, 0.617317, 0.923880},
  120.     {0.707107, 0.887915, 0.270598},
  121.     {0.000000, 1.000000, 0.000000},
  122.     {-0.707107, 0.887915, 0.270598},
  123.     {-1.000000, 0.617317, 0.923880},
  124.     {-0.707107, 0.346719, 1.577161},
  125.     {0.000000, 0.234633, 1.847759},
  126.     {0.707107, 0.346719, 1.577161},
  127.     {1.000000, 0.617317, 0.923880},
  128.     },
  129.  
  130.     {
  131.     {1.000000, 0.804910, 0.980785},
  132.     {0.707107, 0.942859, 0.287265},
  133.     {0.000000, 1.000000, 0.000000},
  134.     {-0.707107, 0.942859, 0.287265},
  135.     {-1.000000, 0.804910, 0.980785},
  136.     {-0.707107, 0.666960, 1.674305},
  137.     {0.000000, 0.609819, 1.961571},
  138.     {0.707107, 0.666960, 1.674305},
  139.     {1.000000, 0.804910, 0.980785},
  140.     },
  141.  
  142.     {
  143.     {1.000000, 1.000000, 1.000000},
  144.     {0.707107, 1.000000, 0.292893},
  145.     {0.000000, 1.000000, 0.000000},
  146.     {-0.707107, 1.000000, 0.292893},
  147.     {-1.000000, 1.000000, 1.000000},
  148.     {-0.707107, 1.000000, 1.707107},
  149.     {0.000000, 1.000000, 2.000000},
  150.     {0.707107, 1.000000, 1.707107},
  151.     {1.000000, 1.000000, 1.000000},
  152.     },
  153.  
  154. };
  155.  
  156. static draw_single_cylinder() {
  157.  
  158.     bgntmesh();
  159. v3f(scp[0]);
  160. v3f(scp[1]);
  161. v3f(scp[2]);
  162. v3f(scp[3]);
  163. v3f(scp[4]);
  164. v3f(scp[5]);
  165. v3f(scp[6]);
  166. v3f(scp[7]);
  167. v3f(scp[8]);
  168. v3f(scp[9]);
  169. v3f(scp[10]);
  170. v3f(scp[11]);
  171. v3f(scp[12]);
  172. v3f(scp[13]);
  173. v3f(scp[14]);
  174. v3f(scp[15]);
  175. v3f(scp[16]);
  176. v3f(scp[17]);
  177.     endtmesh();
  178. }
  179.  
  180. static draw_double_cylinder() {
  181.  
  182.     bgntmesh();
  183. v3f(dcp[0]);
  184. v3f(dcp[1]);
  185. v3f(dcp[2]);
  186. v3f(dcp[3]);
  187. v3f(dcp[4]);
  188. v3f(dcp[5]);
  189. v3f(dcp[6]);
  190. v3f(dcp[7]);
  191. v3f(dcp[8]);
  192. v3f(dcp[9]);
  193. v3f(dcp[10]);
  194. v3f(dcp[11]);
  195. v3f(dcp[12]);
  196. v3f(dcp[13]);
  197. v3f(dcp[14]);
  198. v3f(dcp[15]);
  199. v3f(dcp[16]);
  200. v3f(dcp[17]);
  201.     endtmesh();
  202. }
  203.  
  204. static draw_elbow() {
  205.  
  206.     bgntmesh();
  207.         v3f(ep[0][0]);
  208.         v3f(ep[1][0]);
  209.         v3f(ep[0][1]);
  210.         v3f(ep[1][1]);
  211.         v3f(ep[0][2]);
  212.         v3f(ep[1][2]);
  213.         v3f(ep[0][3]);
  214.         v3f(ep[1][3]);
  215.         v3f(ep[0][4]);
  216.         v3f(ep[1][4]);
  217.         v3f(ep[0][5]);
  218.         v3f(ep[1][5]);
  219.         v3f(ep[0][6]);
  220.         v3f(ep[1][6]);
  221.         v3f(ep[0][7]);
  222.         v3f(ep[1][7]);
  223.         v3f(ep[0][8]);
  224.         v3f(ep[1][8]);
  225.     endtmesh();
  226.     bgntmesh();
  227.         v3f(ep[1][0]);
  228.         v3f(ep[2][0]);
  229.         v3f(ep[1][1]);
  230.         v3f(ep[2][1]);
  231.         v3f(ep[1][2]);
  232.         v3f(ep[2][2]);
  233.         v3f(ep[1][3]);
  234.         v3f(ep[2][3]);
  235.         v3f(ep[1][4]);
  236.         v3f(ep[2][4]);
  237.         v3f(ep[1][5]);
  238.         v3f(ep[2][5]);
  239.         v3f(ep[1][6]);
  240.         v3f(ep[2][6]);
  241.         v3f(ep[1][7]);
  242.         v3f(ep[2][7]);
  243.         v3f(ep[1][8]);
  244.         v3f(ep[2][8]);
  245.     endtmesh();
  246.     bgntmesh();
  247.         v3f(ep[2][0]);
  248.         v3f(ep[3][0]);
  249.         v3f(ep[2][1]);
  250.         v3f(ep[3][1]);
  251.         v3f(ep[2][2]);
  252.         v3f(ep[3][2]);
  253.         v3f(ep[2][3]);
  254.         v3f(ep[3][3]);
  255.         v3f(ep[2][4]);
  256.         v3f(ep[3][4]);
  257.         v3f(ep[2][5]);
  258.         v3f(ep[3][5]);
  259.         v3f(ep[2][6]);
  260.         v3f(ep[3][6]);
  261.         v3f(ep[2][7]);
  262.         v3f(ep[3][7]);
  263.         v3f(ep[2][8]);
  264.         v3f(ep[3][8]);
  265.     endtmesh();
  266.     bgntmesh();
  267.         v3f(ep[3][0]);
  268.         v3f(ep[4][0]);
  269.         v3f(ep[3][1]);
  270.         v3f(ep[4][1]);
  271.         v3f(ep[3][2]);
  272.         v3f(ep[4][2]);
  273.         v3f(ep[3][3]);
  274.         v3f(ep[4][3]);
  275.         v3f(ep[3][4]);
  276.         v3f(ep[4][4]);
  277.         v3f(ep[3][5]);
  278.         v3f(ep[4][5]);
  279.         v3f(ep[3][6]);
  280.         v3f(ep[4][6]);
  281.         v3f(ep[3][7]);
  282.         v3f(ep[4][7]);
  283.         v3f(ep[3][8]);
  284.         v3f(ep[4][8]);
  285.     endtmesh();
  286.     bgntmesh();
  287.         v3f(ep[4][0]);
  288.         v3f(ep[5][0]);
  289.         v3f(ep[4][1]);
  290.         v3f(ep[5][1]);
  291.         v3f(ep[4][2]);
  292.         v3f(ep[5][2]);
  293.         v3f(ep[4][3]);
  294.         v3f(ep[5][3]);
  295.         v3f(ep[4][4]);
  296.         v3f(ep[5][4]);
  297.         v3f(ep[4][5]);
  298.         v3f(ep[5][5]);
  299.         v3f(ep[4][6]);
  300.         v3f(ep[5][6]);
  301.         v3f(ep[4][7]);
  302.         v3f(ep[5][7]);
  303.         v3f(ep[4][8]);
  304.         v3f(ep[5][8]);
  305.     endtmesh();
  306.     bgntmesh();
  307.         v3f(ep[5][0]);
  308.         v3f(ep[6][0]);
  309.         v3f(ep[5][1]);
  310.         v3f(ep[6][1]);
  311.         v3f(ep[5][2]);
  312.         v3f(ep[6][2]);
  313.         v3f(ep[5][3]);
  314.         v3f(ep[6][3]);
  315.         v3f(ep[5][4]);
  316.         v3f(ep[6][4]);
  317.         v3f(ep[5][5]);
  318.         v3f(ep[6][5]);
  319.         v3f(ep[5][6]);
  320.         v3f(ep[6][6]);
  321.         v3f(ep[5][7]);
  322.         v3f(ep[6][7]);
  323.         v3f(ep[5][8]);
  324.         v3f(ep[6][8]);
  325.     endtmesh();
  326.     bgntmesh();
  327.         v3f(ep[6][0]);
  328.         v3f(ep[7][0]);
  329.         v3f(ep[6][1]);
  330.         v3f(ep[7][1]);
  331.         v3f(ep[6][2]);
  332.         v3f(ep[7][2]);
  333.         v3f(ep[6][3]);
  334.         v3f(ep[7][3]);
  335.         v3f(ep[6][4]);
  336.         v3f(ep[7][4]);
  337.         v3f(ep[6][5]);
  338.         v3f(ep[7][5]);
  339.         v3f(ep[6][6]);
  340.         v3f(ep[7][6]);
  341.         v3f(ep[6][7]);
  342.         v3f(ep[7][7]);
  343.         v3f(ep[6][8]);
  344.         v3f(ep[7][8]);
  345.     endtmesh();
  346.     bgntmesh();
  347.         v3f(ep[7][0]);
  348.         v3f(ep[8][0]);
  349.         v3f(ep[7][1]);
  350.         v3f(ep[8][1]);
  351.         v3f(ep[7][2]);
  352.         v3f(ep[8][2]);
  353.         v3f(ep[7][3]);
  354.         v3f(ep[8][3]);
  355.         v3f(ep[7][4]);
  356.         v3f(ep[8][4]);
  357.         v3f(ep[7][5]);
  358.         v3f(ep[8][5]);
  359.         v3f(ep[7][6]);
  360.         v3f(ep[8][6]);
  361.         v3f(ep[7][7]);
  362.         v3f(ep[8][7]);
  363.         v3f(ep[7][8]);
  364.         v3f(ep[8][8]);
  365.     endtmesh();
  366. }
  367.  
  368. static bend_forward() {
  369.  
  370.     translate(0.0, 1.000000, 0.0);
  371.     rotate(900, 'x');
  372.     translate(0.0, -1.000000, 0.0);
  373. }
  374.  
  375. static bend_left() {
  376.  
  377.     rotate(-900, 'z');
  378.     translate(0.0, 1.000000, 0.0);
  379.     rotate(900, 'x');
  380.     translate(0.0, -1.000000, 0.0);
  381. }
  382.  
  383. static bend_right() {
  384.  
  385.     rotate(900, 'z');
  386.     translate(0.0, 1.000000, 0.0);
  387.     rotate(900, 'x');
  388.     translate(0.0, -1.000000, 0.0);
  389. }
  390.  
  391. draw_logo_shadow() {
  392.  
  393.     translate(5.500000, -3.500000, 4.500000);
  394.  
  395.     translate(0.0, 0.0, -7.000000);
  396.     draw_double_cylinder();
  397.     bend_forward();
  398.     draw_elbow();
  399.     translate(0.0, 0.0, -7.000000);
  400.     draw_double_cylinder();
  401.     bend_forward();
  402.     draw_elbow();
  403.     translate(0.0, 0.0, -5.000000);
  404.     draw_single_cylinder();
  405.     bend_right();
  406.     draw_elbow();
  407.     translate(0.0, 0.0, -7.000000);
  408.     draw_double_cylinder();
  409.     bend_forward();
  410.     draw_elbow();
  411.     translate(0.0, 0.0, -7.000000);
  412.     draw_double_cylinder();
  413.     bend_forward();
  414.     draw_elbow();
  415.     translate(0.0, 0.0, -5.000000);
  416.     draw_single_cylinder();
  417.     bend_left();
  418.     draw_elbow();
  419.     translate(0.0, 0.0, -7.000000);
  420.     draw_double_cylinder();
  421.     bend_forward();
  422.     draw_elbow();
  423.     translate(0.0, 0.0, -7.000000);
  424.     draw_double_cylinder();
  425.     bend_forward();
  426.     draw_elbow();
  427.     translate(0.0, 0.0, -5.000000);
  428.     draw_single_cylinder();
  429.     bend_right();
  430.     draw_elbow();
  431.     translate(0.0, 0.0, -7.000000);
  432.     draw_double_cylinder();
  433.     bend_forward();
  434.     draw_elbow();
  435.     translate(0.0, 0.0, -7.000000);
  436.     draw_double_cylinder();
  437.     bend_forward();
  438.     draw_elbow();
  439.     translate(0.0, 0.0, -5.000000);
  440.     draw_single_cylinder();
  441.     bend_left();
  442.     draw_elbow();
  443.     translate(0.0, 0.0, -7.000000);
  444.     draw_double_cylinder();
  445.     bend_forward();
  446.     draw_elbow();
  447.     translate(0.0, 0.0, -7.000000);
  448.     draw_double_cylinder();
  449.     bend_forward();
  450.     draw_elbow();
  451.     translate(0.0, 0.0, -5.000000);
  452.     draw_single_cylinder();
  453.     bend_right();
  454.     draw_elbow();
  455.     translate(0.0, 0.0, -7.000000);
  456.     draw_double_cylinder();
  457.     bend_forward();
  458.     draw_elbow();
  459.     translate(0.0, 0.0, -7.000000);
  460.     draw_double_cylinder();
  461.     bend_forward();
  462.     draw_elbow();
  463.     translate(0.0, 0.0, -5.000000);
  464.     draw_single_cylinder();
  465.     bend_left();
  466.     draw_elbow();
  467. }
  468.  
  469.